
Tras múltiples pruebas en la aplicación se ha detectado un fallo de precisión en el cálculo de los puntos en los que la pendiente de la elipse es 1. Esto ocurre, por ejemplo, para los valores a=15, b=10, f=30. No hemos podido concretar a qué se debe, ya que las fórmulas aplicadas son idénticas a las vistas en clase, y no existe error de redondeo (se ha probado de forma explícita).
theta1 = atan2( (float)(-b), (
(float) (a) * tan ( M_PI_4 - phi ) ) );
theta2 = atan2( (float)(-b), ( (float) (a) * tan (-M_PI_4 - phi ) ) );
theta3 = M_PI + theta1;
theta4 = M_PI + theta2;
x1 = redondea( (float) (a) * cos(theta1) * cos(phi) - (float) (b) * sin(theta1)
* sin(phi) );
x2 = redondea( (float) (a) * cos(theta2) * cos(phi) - (float) (b) * sin(theta2)
* sin(phi) );
x3 = redondea( (float) (a) * cos(theta3) * cos(phi) - (float) (b) * sin(theta3)
* sin(phi) );
x4 = redondea( (float) (a) * cos(theta4) * cos(phi) - (float) (b) * sin(theta4)
* sin(phi) );
y1 = redondea( (float) (a) * cos(theta1) * sin(phi) + (float) (b) * sin(theta1)
* cos(phi) );
y2 = redondea( (float) (a) * cos(theta2) * sin(phi) + (float) (b) * sin(theta2)
* cos(phi) );
y3 = redondea( (float) (a) * cos(theta3) * sin(phi) + (float) (b) * sin(theta3)
* cos(phi) );
y4 = redondea( (float) (a) * cos(theta4) * sin(phi) + (float) (b) * sin(theta4)
* cos(phi) );
tg (q1) = -b / a · tg ( p/4 - f )
tg (q2) = -b / a · tg (-p/4 - f )
q3 = p + q1
q4 = p + q2
xi = a · cos (qi) · cos (f) - b · sen (qi) · sin(f)
yi = a · cos (qi) · sin (f) + b · sen (qi) · cos(f) , para i = {1, 2, 3, 4}